//
//  DownManager.h
//  MiBaoTu
//
//  Created by admin on 16/9/23.
//  Copyright © 2016年 com.caesartech15. All rights reserved.
//  下载管理器

#import <Foundation/Foundation.h>
#import "DownMusicModel.h"

@protocol DownManagerDelegate <NSObject>
/** 下载中的回调 */
- (void)downloadResponse:(DownMusicModel *)musicModel;

@end

@interface DownManager : NSObject

@property (nonatomic, weak) id<DownManagerDelegate> delegate;

/*
 * 单例
 * @return 返回单例对象
 */
+ (instancetype)staredInstance;

/*
 * 开始下载
 * @param urlString 下载地址
 * @param progressBlock 回调下载进度
 * @param statsBlock 回调下载状态
 */
- (void)downloadWithUrl:(NSString *)urlString
          withMusicName:(NSString *)musicFullName
             withUserID:(NSString *)userID
            withMusicID:(NSString *)musicID
            withContent:(NSString *)content
          withMusicType:(NSString *)type
             withPicUrl:(NSString *)picUrl
               withDate:(NSString *)date
            withUserPic:(NSString *)userPic
           withUserNick:(NSString *)nick
               withSize:(NSString *)size
           withProgress:(DownLoadProgressBlock)progressBlock
              withStats:(DownLoadStatsBlock)statsBlock;

- (void)downloadWithUrl:(NSString *)urlString
          withMusicName:(NSString *)musicName
            withMusicID:(NSString *)musicID
          withMusicType:(NSString *)type
           withProgress:(DownLoadProgressBlock)progressBlock
              withStats:(DownLoadStatsBlock)statsBlock;

/**
 * 归档
 */
- (void)save:(NSArray *)sessionModels;

/**
 * 读取model
 */
- (NSArray *)getSessionModels;

/**
 *  查询该资源的下载进度值
 *
 *  @param url 下载地址
 *
 *  @return 返回下载进度值
 */
- (CGFloat)progress:(NSString *)url withFilePath:(NSString *)filePath;

/**
 *  获取该资源总大小
 *
 *  @param url 下载地址
 *
 *  @return 资源总大小
 */
- (NSInteger)fileTotalLength:(NSString *)url;

/**
 *  判断该资源是否下载完成
 *
 *  @param url 下载地址
 *
 *  @return YES: 完成
 */
- (BOOL)isCompletion:(NSString *)url;

/**
 *  删除该资源
 *
 *  @param filePath 文件存储名称
 */
- (void)deleteFile:(DownMusicModel *)musicModel;

/**
 *  清空所有下载资源
 */
- (void)deleteAllFile;

/**
 *  开始下载 url:文件本地存储名称 1.mp3
 */
- (void)start:(NSString *)url;

/**
 *  暂停下载 url:文件本地存储名称
 */
- (void)pause:(NSString *)url;

/*
 * 全部暂停,返回数组包含未正在下载状态的音频
 */
- (NSMutableArray *)pauseAllMusic:(BOOL)isSuspend;

/**
 *  判断当前url是否正在下载
 *
 *  @param url   视频url
 *  @param block 下载进度
 *
 *  @return 是否在下载
 */
- (BOOL)isFileDownloadingForUrl:(NSString *)url withProgressBlock:(DownLoadProgressBlock)block;

/**
 *  正在下载的视频URL的数组
 *
 *  @return 视频URL的数组
 */
- (NSArray *)currentDownloads;

@end
